home *** CD-ROM | disk | FTP | other *** search
-
-
-
- NNNNeeeetttt::::::::PPPPiiiinnnngggg((((3333)))) NNNNeeeetttt::::::::PPPPiiiinnnngggg((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- Net::Ping - check a remote host for reachability
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use Net::Ping;
-
- $p = Net::Ping->new();
- print "$host is alive.\n" if $p->ping($host);
- $p->close();
-
- $p = Net::Ping->new("icmp");
- foreach $host (@host_array)
- {
- print "$host is ";
- print "NOT " unless $p->ping($host, 2);
- print "reachable.\n";
- sleep(1);
- }
- $p->close();
-
- $p = Net::Ping->new("tcp", 2);
- while ($stop_time > time())
- {
- print "$host not reachable ", scalar(localtime()), "\n"
- unless $p->ping($host);
- sleep(300);
- }
- undef($p);
-
- # For backward compatibility
- print "$host is alive.\n" if pingecho($host);
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- This module contains methods to test the reachability of remote hosts on
- a network. A ping object is first created with optional parameters, a
- variable number of hosts may be pinged multiple times and then the
- connection is closed.
-
- You may choose one of three different protocols to use for the ping.
- With the "tcp" protocol the _p_i_n_g() method attempts to establish a
- connection to the remote host's echo port. If the connection is
- successfully established, the remote host is considered reachable. No
- data is actually echoed. This protocol does not require any special
- privileges but has higher overhead than the other two protocols.
-
- Specifying the "udp" protocol causes the _p_i_n_g() method to send a udp
- packet to the remote host's echo port. If the echoed packet is received
- from the remote host and the received packet contains the same data as
- the packet that was sent, the remote host is considered reachable. This
- protocol does not require any special privileges.
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- NNNNeeeetttt::::::::PPPPiiiinnnngggg((((3333)))) NNNNeeeetttt::::::::PPPPiiiinnnngggg((((3333))))
-
-
-
- If the "icmp" protocol is specified, the _p_i_n_g() method sends an icmp echo
- message to the remote host, which is what the UNIX ping program does. If
- the echoed message is received from the remote host and the echoed
- information is correct, the remote host is considered reachable.
- Specifying the "icmp" protocol requires that the program be run as root
- or that the program be setuid to root.
-
- FFFFuuuunnnnccccttttiiiioooonnnnssss
-
- Net::Ping->new([$proto [, $def_timeout [, $bytes]]]);
- Create a new ping object. All of the parameters are optional.
- $proto specifies the protocol to use when doing a ping. The current
- choices are "tcp", "udp" or "icmp". The default is "udp".
-
- If a default timeout ($def_timeout) in seconds is provided, it is
- used when a timeout is not given to the _p_i_n_g() method (below). The
- timeout must be greater than 0 and the default, if not specified, is
- 5 seconds.
-
- If the number of data bytes ($bytes) is given, that many data bytes
- are included in the ping packet sent to the remote host. The number
- of data bytes is ignored if the protocol is "tcp". The minimum (and
- default) number of data bytes is 1 if the protocol is "udp" and 0
- otherwise. The maximum number of data bytes that can be specified is
- 1024.
-
- $p->ping($host [, $timeout]);
- Ping the remote host and wait for a response. $host can be either
- the hostname or the IP number of the remote host. The optional
- timeout must be greater than 0 seconds and defaults to whatever was
- specified when the ping object was created. If the hostname cannot
- be found or there is a problem with the IP number, undef is returned.
- Otherwise, 1 is returned if the host is reachable and 0 if it is not.
- For all practical purposes, undef and 0 and can be treated as the
- same case.
-
- $p->close();
- Close the network connection for this ping object. The network
- connection is also closed by "undef $p". The network connection is
- automatically closed if the ping object goes out of scope (e.g. $p is
- local to a subroutine and you leave the subroutine).
-
- pingecho($host [, $timeout]);
- To provide backward compatibility with the previous version of
- Net::Ping, a _p_i_n_g_e_c_h_o() subroutine is available with the same
- functionality as before. _p_i_n_g_e_c_h_o() uses the tcp protocol. The
- return values and parameters are the same as described for the _p_i_n_g()
- method. This subroutine is obsolete and may be removed in a future
- version of Net::Ping.
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- NNNNeeeetttt::::::::PPPPiiiinnnngggg((((3333)))) NNNNeeeetttt::::::::PPPPiiiinnnngggg((((3333))))
-
-
-
- WWWWAAAARRRRNNNNIIIINNNNGGGG
- _p_i_n_g_e_c_h_o() or a ping object with the tcp protocol use _a_l_a_r_m() to
- implement the timeout. So, don't use _a_l_a_r_m() in your program while you
- are using _p_i_n_g_e_c_h_o() or a ping object with the tcp protocol. The udp and
- icmp protocols do not use _a_l_a_r_m() to implement the timeout.
-
- NNNNOOOOTTTTEEEESSSS
- There will be less network overhead (and some efficiency in your program)
- if you specify either the udp or the icmp protocol. The tcp protocol
- will generate 2.5 times or more traffic for each ping than either udp or
- icmp. If many hosts are pinged frequently, you may wish to implement a
- small wait (e.g. 25ms or more) between each ping to avoid flooding your
- network with packets.
-
- The icmp protocol requires that the program be run as root or that it be
- setuid to root. The tcp and udp protocols do not require special
- privileges, but not all network devices implement the echo protocol for
- tcp or udp.
-
- Local hosts should normally respond to pings within milliseconds.
- However, on a very congested network it may take up to 3 seconds or
- longer to receive an echo packet from the remote host. If the timeout is
- set too low under these conditions, it will appear that the remote host
- is not reachable (which is almost the truth).
-
- Reachability doesn't necessarily mean that the remote host is actually
- functioning beyond its ability to echo packets.
-
- Because of a lack of anything better, this module uses its own routines
- to pack and unpack ICMP packets. It would be better for a separate
- module to be written which understands all of the different kinds of ICMP
- packets.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-